struct _CM_KCB_UOW// Size=0x40
{
    struct _LIST_ENTRY TransactionListEntry;// Offset=0x0 Size=0x8
    struct _CM_INTENT_LOCK * KCBLock;// Offset=0x8 Size=0x4
    struct _CM_INTENT_LOCK * KeyLock;// Offset=0xc Size=0x4
    struct _LIST_ENTRY KCBListEntry;// Offset=0x10 Size=0x8
    struct _CM_KEY_CONTROL_BLOCK * KeyControlBlock;// Offset=0x18 Size=0x4
    struct _CM_TRANS * Transaction;// Offset=0x1c Size=0x4
    unsigned long UoWState;// Offset=0x20 Size=0x4
    enum UoWActionType ActionType;// Offset=0x24 Size=0x4
    enum HSTORAGE_TYPE StorageType;// Offset=0x28 Size=0x4
    struct _CM_KCB_UOW * ParentUoW;// Offset=0x2c Size=0x4
    struct _CM_KEY_CONTROL_BLOCK * ChildKCB;// Offset=0x30 Size=0x4
    unsigned long VolatileKeyCell;// Offset=0x30 Size=0x4
    unsigned long OldValueCell;// Offset=0x30 Size=0x4
    unsigned long NewValueCell;// Offset=0x34 Size=0x4
    unsigned long UserFlags;// Offset=0x30 Size=0x4
    union _LARGE_INTEGER LastWriteTime;// Offset=0x30 Size=0x8
    unsigned long TxSecurityCell;// Offset=0x30 Size=0x4
    struct _CM_KEY_CONTROL_BLOCK * OldChildKCB;// Offset=0x30 Size=0x4
    struct _CM_KEY_CONTROL_BLOCK * NewChildKCB;// Offset=0x34 Size=0x4
    struct _CM_KEY_CONTROL_BLOCK * OtherChildKCB;// Offset=0x30 Size=0x4
    unsigned long ThisVolatileKeyCell;// Offset=0x34 Size=0x4
    void * PrepareDataPointer;// Offset=0x38 Size=0x4
    struct _CM_UOW_SET_SD_DATA * SecurityData;// Offset=0x38 Size=0x4
    struct _CM_UOW_KEY_STATE_MODIFICATION * ModifyKeysData;// Offset=0x38 Size=0x4
    struct _CM_UOW_SET_VALUE_LIST_DATA * SetValueData;// Offset=0x38 Size=0x4
    struct _CM_UOW_SET_VALUE_KEY_DATA * ValueData;// Offset=0x3c Size=0x4
    struct _CMP_DISCARD_AND_REPLACE_KCB_CONTEXT * DiscardReplaceContext;// Offset=0x3c Size=0x4
};